﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MediaTransfer.Impl
{
    public interface IWorkItem
    {
        /// <summary>
        /// 工作项内部编号
        /// </summary>
        long ID { get; set; }
        /// <summary>
        /// 工作项标识 如接收任务为CP标记
        /// </summary>
        string Tag { get; set; }
        /// <summary>
        /// 工作项名称
        /// </summary>
        string Name { get; set; }
        /// <summary>
        /// 展示名称
        /// </summary>
        string Caption { get; set; }
        /// <summary>
        /// 工作项编号2 一般与任务ID相同
        /// </summary>
        string TaskID { get; set; }
        /// <summary>
        /// 任务类型  根据类型来判定队列数量 默认0 所有任务都在一起
        /// </summary>
        int WorkType { get; set; }
        /// <summary>
        /// 工作项优先级
        /// </summary>
        int Priority { get; set; }
        /// <summary>
        /// 运行模式
        /// </summary>
        int Model { get; set; }
        /// <summary>
        /// 执行动作 新增、更新、删除、未定义
        /// </summary>
        int WorkAction { get; set; }
        /// <summary>
        /// 工作项组
        /// </summary>
        /// <remarks>多个工作项间通过Group进行关联</remarks>
        int WorkGroup { get; set; }
        /// <summary>
        /// 任务关联编号
        /// </summary>
        string WorkID { get; set; }
        /// <summary>
        /// 工作项内容
        /// </summary>
        Object WorkItems { get; set; }
        /// <summary>
        /// 
        /// </summary>
        string WorkJson { get; set; }
        /// <summary>
        /// 工作项结果集
        /// </summary>
        Object ResultItems { get; }

        /// <summary>
        /// 工作项失败已重试次数
        /// </summary>
        /// <remarks>原定义为可重试次数，现更改为已重试次数，每个工作项可重试次数由主配置决定，自己不再配置</remarks>
        int RedoTimes { get; set; }
        /// <summary>
        /// 工作项轮询时长
        /// </summary>
        int Times { get; set; }
        /// <summary>
        /// 任务当前状态 工作项包括任务
        /// </summary>
        int TaskState { get; set; }
        /// <summary>
        /// 工作项状态
        /// </summary>
        int Statu { get; set; }
        /// <summary>
        /// 工作项执行指令
        /// </summary>
        void ExecItem();
        /// <summary>
        /// 更新任务状态
        /// </summary>
        void UpdateTaskState(string taskId, int iState);
        /// <summary>
        /// 自动保存 
        /// </summary>
        /// <remarks>在多个工作项同步工作时需配置为false</remarks>
        bool AutoSave { get; set; }
        /// <summary>
        /// 开始时间
        /// </summary>
        DateTime BeginTime { get; set; }
        /// <summary>
        /// 结束时间
        /// </summary>
        DateTime EndTime { get; set; }
        /// <summary>
        /// 工作项创建人
        /// </summary>
        string CreateUser { get; set; }
        /// <summary>
        /// 工作项创建时间
        /// </summary>
        DateTime CreateTime { get; set; }
    }
}
